package com.zshan.clinic.admin.mapper.stock;


import com.zshan.clinic.admin.entity.vo.StockDrugDetailVo;
import com.zshan.clinic.admin.entity.vo.StockDrugProfileDetailVo;
import com.zshan.clinic.admin.entity.vo.StockDrugProfileVo;
import com.zshan.clinic.admin.entity.vo.StockDrugSignatureVo;
import com.zshan.clinic.database.model.StockDrugUsage;
import com.zshan.clinic.mybatis.SuperMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface SpecDrugProfileMapper extends SuperMapper {

    /**
     * 用量
     * @param usageList
     */
    void addUsageBatch(@Param("usageList") List<StockDrugUsage> usageList);

    /**
     * 查询档案数量
     * @param clinicId
     * @param storageId
     * @param drugName
     * @param drugCategory
     * @return
     */
    Long getDrugProfileCount(@Param("clinicId") Long clinicId,
                             @Param("storageId") Long storageId,
                             @Param("drugName") String drugName,
                             @Param("drugCategory") String drugCategory);

    /**
     * 查询档案列表
     * @param clinicId
     * @param storageId
     * @param drugName
     * @param drugCategory
     * @param offset
     * @param limit
     * @return
     */
    List<StockDrugProfileVo> getDrugProfileList(@Param("clinicId") Long clinicId,
                                                @Param("storageId") Long storageId,
                                                @Param("drugName") String drugName,
                                                @Param("drugCategory") String drugCategory,
                                                @Param("offset") Integer offset,
                                                @Param("limit") Integer limit);

    /**
     * 获取档案详情
     * @param clinicId
     * @param drugId
     * @return
     */
    StockDrugProfileDetailVo getDrugProfileDetail(@Param("clinicId") Long clinicId,
                                                  @Param("drugId") Long drugId,
                                                  @Param("storageId") Long storageId);

    /**
     * 查询药品库存列表
     * @param clinicId
     * @param storageId
     * @param drugIdList
     * @return
     */
    List<StockDrugDetailVo> getDrugRxStorageList(@Param("clinicId") Long clinicId,
                                                 @Param("storageId") Long storageId,
                                                 @Param("drugIdList") List<Long> drugIdList);

    /**
     * 查询药品列表
     * @param clinicId
     * @param storageId
     * @param drugName
     * @param drugIdList
     * @param recoms
     * @param drugCategoryList
     * @return
     */
    List<StockDrugProfileDetailVo> getDrugRxList(@Param("clinicId") Long clinicId,
                                                 @Param("storageId") Long storageId,
                                                 @Param("drugName") String drugName,
                                                 @Param("drugIdList") List<Long> drugIdList,
                                                 @Param("recoms") String recoms,
                                                 @Param("drugCategoryList") List<String> drugCategoryList);

    /**
     * 获取药品签名数量
     * @param clinicId
     * @param drugName
     * @param isSignature
     * @return
     */
    Long getDrugSignatureCount(@Param("clinicId") Long clinicId,
                               @Param("empId") Long empId,
                               @Param("drugName") String drugName,
                               @Param("isSignature") String isSignature);

    /**
     * 获取药品签名列表
     * @param clinicId
     * @param drugName
     * @param isSignature
     * @param offset
     * @param limit
     * @return
     */
    List<StockDrugSignatureVo> getDrugSignatureList(@Param("clinicId") Long clinicId,
                                                    @Param("empId") Long empId,
                                                    @Param("drugName") String drugName,
                                                    @Param("isSignature") String isSignature,
                                                    @Param("offset") Integer offset,
                                                    @Param("limit") Integer limit);

}
